home *** CD-ROM | disk | FTP | other *** search
/ Homo Sapiens / Home Sapiens.iso / setup / hs.mst < prev    next >
Encoding:
Text File  |  1995-07-21  |  18.1 KB  |  561 lines

  1. '**************************************************************************
  2. '*                 Homo Sapiens - v.1.00
  3. '**************************************************************************
  4.  
  5. '$DEFINE DEBUG
  6.  
  7. '$INCLUDE 'setupapi.inc'
  8. '$INCLUDE 'mscpydis.inc'    ''System
  9. '$INCLUDE 'msdetect.inc'    ''Detects Avalilable Disk Space
  10.  
  11. DECLARE FUNCTION mciSendString LIB "mmsystem.dll" (szCommand AS STRING, szReturn AS STRING, wRetunL AS INTEGER, hVoid AS INTEGER ) AS LONG
  12.  
  13. ''Dialog ID's
  14. CONST WELCOME       = 100
  15. CONST ASKQUIT       = 200
  16. CONST DESTPATH      = 300
  17. CONST EXITFAILURE   = 400
  18. CONST EXITQUIT      = 600
  19. CONST EXITSUCCESS   = 700
  20. CONST APPHELP       = 900
  21. CONST BADPATH       = 6400
  22. CONST CHECK         = 2500
  23. ''CONST SMALLWIN      = 2200
  24. CONST SMALLWIN      = 6300
  25. CONST RESTART       = 2600
  26. CONST RESTARTII     = 2700
  27. CONST UPDATERUNTIME = 9000
  28. CONST BADRUNTIME = 9100
  29. CONST DISKSPACEDLG  = 8050
  30. ''Bitmap ID
  31. CONST LOGO = 1
  32. CONST VFW11 = 2
  33.  
  34. GLOBAL DEST$        ''Default destination directory.
  35. GLOBAL INSTPATH$    ''Default destination directory.
  36. GLOBAL RET$
  37. GLOBAL CUIDLL$
  38.  
  39. DECLARE SUB InstallHS
  40. DECLARE SUB ConfigHS
  41. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  42. DECLARE FUNCTION EnoughDiskSpace () AS INTEGER
  43.  
  44. GLOBAL SizeReq&  '' Total Disk Size required for installation
  45.  
  46. ''''''''''''''''''''''''''''''
  47. ''VFW11
  48. ''File Types
  49. GLOBAL WinDir$
  50. GLOBAL WinSysDir$
  51. GLOBAL WinSys32Dir$
  52. GLOBAL WINDRIVE$    ''Windows Drive Letter.
  53. GLOBAL CHECKSTATES$
  54. GLOBAL MinorVer%
  55. GLOBAL OnNT$
  56.  
  57. DECLARE SUB Install
  58. DECLARE FUNCTION OnWindowsNT LIB "INIUPD.DLL" AS INTEGER
  59. DECLARE FUNCTION VflatdPresent LIB "iniupd.DLL" AS INTEGER
  60. DECLARE SUB Reboot LIB "iniupd.dll"
  61. DECLARE FUNCTION ExitWindowsExec  LIB "User" (Exec$, Param$) AS INTEGER
  62.  
  63.  
  64. INIT:
  65.     SetTitle "Homo Sapiens - Setup"
  66.  
  67.     CUIDLL$ = "mscuihsm.dll"            ''Custom user interface dll - custom per EMME
  68.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  69.  
  70.     WIN32ENABLED% = 0
  71.     MajorVer% = GetWindowsMajorVersion()
  72.     MinorVer% = GetWindowsMinorVersion()
  73.  
  74.  
  75.     IF MajorVer% < 3 OR (MajorVer% = 3 AND MinorVer% < 10) THEN
  76.     i% = DoMsgBox("Microsoft Windows version 3.10 or greater is required for this software.  Please upgrade your version of Windows.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  77.     END
  78.     END IF
  79.  
  80.     SetBitmap CUIDLL$, LOGO
  81.  
  82.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  83.     IF szInf$ = "" THEN
  84.     szInf$ = GetSymbolValue("STF_CWDDIR") + "HS.INF"
  85.     END IF
  86.     ReadInfFile szInf$
  87.  
  88.     WinDir$ = GetWindowsDir()
  89.     WinSysDir$ = GetWindowsSysDir()
  90.     RET$ = "                                                    "
  91.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  92.     DEST$ = GetIniKeyString( MakePath(WinDir$, "OPERAMM.INI"), "Homo Sapiens", "InstallationPath" )
  93.     IF DEST$ = "" THEN
  94.         DEST$ = "C:\HOMO"
  95.     END IF
  96.  
  97. '$IFDEF DEBUG
  98.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  99.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  100.     IF IsDriveValid(WinDrive$) = 0 THEN
  101.     i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  102.     GOTO QUIT
  103.     END IF
  104. '$ENDIF ''DEBUG
  105.  
  106. WELCOME:
  107.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  108.     IF sz$ = "CONTINUE" THEN
  109.     UIPop 1
  110.     ELSE
  111.     GOSUB ASKQUIT
  112.     GOTO WELCOME
  113.     END IF
  114.  
  115. GETPATH:
  116.     SetSymbolValue "EditTextIn", DEST$
  117.     SetSymbolValue "EditFocus", "END"
  118. GETPATHL1:
  119.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  120.     DEST$ = GetSymbolValue("EditTextOut")
  121.  
  122.     IF sz$ = "CONTINUE" THEN
  123.     IF IsDirWritable(DEST$) = 0 THEN
  124.         GOSUB BADPATH
  125.         GOTO GETPATHL1
  126.     END IF
  127.     rr% = EnoughDiskSpace ()
  128.     IF rr% <> 0 THEN
  129.         IF rr% = 3 THEN
  130.             GOSUB ASKQUIT
  131.             GOTO GETPATH
  132.         END IF
  133.         GOTO GETPATHL1
  134.     END IF
  135.     UIPop 1
  136.     ELSEIF sz$ = "REACTIVATE" THEN
  137.     GOTO GETPATHL1
  138.     ELSEIF sz$ = "BACK" THEN
  139.     UIPop 1
  140.     GOTO WELCOME
  141.     ELSE
  142.     GOSUB ASKQUIT
  143.     GOTO GETPATH
  144.     END IF
  145.  
  146.  
  147.     CreateDir DEST$, cmoNone
  148.     OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
  149.     InstallHS
  150.  
  151.     AVI = 0
  152.     e& = mciSendString ( "sysInfo all quantity", RET$, 30, 0 )
  153.     IF e& = 0 THEN
  154.         NumDev% = VAL(RET$)
  155.         FOR dev% = 1 to NumDev%
  156.             e& = mciSendString ( "sysInfo all name "+STR$(dev%), RET$, 40, 0 )
  157.             IF RET$ = "AVIVideo" THEN
  158.                 AVI = 1
  159.             END IF
  160.         NEXT
  161.     END IF
  162.     IF AVI <> 0 THEN
  163. UPDRUNTIME:
  164.         sz$ = UIStartDlg(CUIDLL$, UPDATERUNTIME, "FQuitDlgProc", 0, "")
  165.  
  166.         IF sz$ = "EXIT" THEN
  167.         UIPop 1
  168.             GOTO ENDOFSETUP
  169.         ELSEIF sz$ = "REACTIVATE" THEN
  170.         GOTO UPDRUNTIME
  171.         ELSE
  172.         UIPop 1
  173.         END IF
  174.     END IF
  175.  
  176.  
  177. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  178. '' Video For Windows 1.1 installation
  179.  
  180. ''Prepare Copy list and check size
  181.  
  182.     ClearCopyList
  183.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  184.     DEST$ = WinDir$
  185.     WinSys32Dir$ = WinDir$ + "system32"
  186.  
  187.     ' Use Wowexec to determine version of NT.  3.1 did not stamp wowexec and wow returns 3.1 as version
  188.     IF OnWindowsNT() THEN
  189.       OnNT$ = "TRUE"
  190.       WowVersion$ = GetVersionOfFile(WinSys32Dir$ + "\wowexec.exe")
  191.       IF WowVersion$ = "" THEN
  192.          i% = DoMsgBox("Video for Windows does not run on Windows NT 3.1.  Please upgrade your version of Windows.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  193.          GOTO NOVIDEO
  194.       END IF
  195.     END IF
  196.  
  197.     Processor% = GetProcessorType()
  198.  
  199.     'Prevents installation on 286
  200.     IF Processor% < 3 THEN
  201.     i% = DoMsgBox("Video for Windows requires a 386 or greater processor or emulator.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  202.     GOTO NOVIDEO
  203.     END IF
  204.  
  205. '' Remove DCISVGA file
  206.     AddSectionFilesToCopyList "remove", SrcDir$, WinSysDir$
  207.  
  208. ''  Runtime files (on Windows disk)
  209. ''  Do not install OLE or MPlayer if on next release of NT or Windows
  210.  
  211.     IF ((NOT OnNT$ = "TRUE") AND MinorVer% < 50) THEN           'These files not necessary on Windows NT
  212.     AddSectionFilesToCopyList "MPlayer", SrcDir$, WinDir$
  213.     AddSectionFilesToCopyList "OLE2", SrcDir$, WinSysDir$
  214.     END IF
  215.     AddSectionFilesToCopyList "VfW Runtime", SrcDir$, WinSysDir$
  216.     AddSectionFilesToCopyList "ACM Drivers", SrcDir$, WinSysDir$
  217.     AddSectionFilesToCopyList "AVICodecs", SrcDir$, WinSysDir$
  218.     IF OnNT$ = "TRUE" THEN
  219.     AddSectionFilesToCopyList "NT MSVideo", SrcDir$, WinSys32Dir$
  220.     ENDIF
  221. ''*************************************************************************************************************************
  222. ''*************************************************************************************************************************
  223. ''To add a DCI provider, please un-comment the AddSectionFilesToCopyList,
  224. ''and add a "DCI Provider" section with to the SETUP.INF file.
  225. ''
  226. ''  AddSectionFilesToCopyList "DCI Provider", SrcDir$, WinSysDir$
  227. ''*************************************************************************************************************************
  228. ''*************************************************************************************************************************
  229.  
  230.  
  231. ''  Check windrive diskspace
  232.     SizeReq& = GetCopyListCost ("","", "")
  233.     IF SizeReq& <> 0 THEN
  234.     GOSUB SMALLWIN
  235.     GOTO NOVIDEO
  236.     END IF
  237.  
  238. Install
  239. ConfigHS
  240. CloseLogFile
  241.  
  242. '' Restart Windows: if it has to updates ACM from DOS, it restarts Windows automatically
  243. '' else, it gives the user the choice
  244.     RESTRT% = RestartListEmpty ()
  245.     Exe$ = DEST$ + "\_msrstrt.exe"
  246.     Batch$ = DEST$ + "\_mssetup.bat"
  247.     empty$ = ""
  248. RESTART:
  249.     IF RESTRT% = 0 THEN
  250.        sz$ = UIStartDlg(cuidll$, RESTART, "FInfo0DlgProc", 0, "")
  251.        IF sz$ = "REACTIVATE" THEN
  252.       GOTO RESTART
  253.        ENDIF
  254.        I% = ExitExecRestart ()
  255.        RemoveFile Exe$, cmoForce
  256.        RemoveFile Batch$, cmoForce
  257.        END
  258.     ELSE
  259.        sz$ = UIStartDlg(CUIDLL$, RESTARTII, "FQuitDlgProc", 0, "")
  260.        IF sz$ = "CONTINUE" THEN
  261.       I% = ExitWindowsExec (Exe$, empty$)
  262.       IF I% = 0 THEN
  263.          GOTO RESTART
  264.       ELSE
  265.          END
  266.      ENDIF
  267.        ELSEIF sz$ = "EXIT" THEN
  268.       UIPopAll
  269.       END
  270.        ELSEIF sz$ = "REACTIVATE" THEN
  271.       GOTO RESTART
  272.        ELSE
  273.       UIPop 1
  274.        END IF
  275.     END IF
  276.  
  277. ENDOFSETUP:
  278.     ConfigHS
  279.     CloseLogFile
  280.  
  281. QUIT:
  282.     ON ERROR GOTO ERRQUIT
  283.  
  284.     IF ERR = 0 THEN
  285.     dlg% = EXITSUCCESS
  286.     ELSEIF ERR = STFQUIT THEN
  287.     dlg% = EXITQUIT
  288.     ELSE
  289.     dlg% = EXITFAILURE
  290.     END IF
  291. QUITL1:
  292.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  293.     IF sz$ = "REACTIVATE" THEN
  294.     GOTO QUITL1
  295.     END IF
  296.     UIPop 1
  297.  
  298.     END
  299.  
  300. NOVIDEO:
  301.     sz$ = UIStartDlg(CUIDLL$, BADRUNTIME, "FInfo0DlgProc", 0, "")
  302.     IF sz$ = "REACTIVATE" THEN
  303.     GOTO NOVIDEO
  304.     END IF
  305.     UIPop 1
  306.     GOTO ENDOFSETUP
  307.  
  308. ERRQUIT:
  309.     i% = DoMsgBox("Unrecoverable error during setup", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  310.     END
  311.  
  312.  
  313.  
  314. BADPATH:
  315.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  316.     IF sz$ = "REACTIVATE" THEN
  317.     GOTO BADPATH
  318.     END IF
  319.     UIPop 1
  320.     RETURN
  321.  
  322. ASKQUIT:
  323.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  324.  
  325.     IF sz$ = "EXIT" THEN
  326.     UIPopAll
  327.     ERROR STFQUIT
  328.     ELSEIF sz$ = "REACTIVATE" THEN
  329.     GOTO ASKQUIT
  330.     ELSE
  331.     UIPop 1
  332.     END IF
  333.     RETURN
  334.  
  335.  
  336. SMALLWIN:
  337.     sz$ = UIStartDlg(CUIDLL$, SMALLWIN, "FInfo0DlgProc", 0, "")
  338.     IF sz$ = "REACTIVATE" THEN
  339.     GOTO SMALLWIN
  340.     END IF
  341.     UIPop 1
  342.     RETURN
  343.  
  344.  
  345. '**
  346. '** Purpose:
  347. '**     Builds the copy list and performs all installation operations.
  348. '** Arguments:
  349. '**     none.
  350. '** Returns:
  351. '**     none.
  352. '*************************************************************************
  353. SUB InstallHS STATIC
  354.  
  355.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  356.  
  357.     WriteToLogFile ""
  358.     WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
  359.     WriteToLogFile ""
  360.     WriteToLogFile "May have had to create the directory: " + DEST$
  361.     WriteToLogFile ""
  362.  
  363.     AddSectionFilesToCopyList "Runtime", SrcDir$, DEST$
  364.     AddSectionFilesToCopyList "HOMO", SrcDir$, DEST$
  365.     CopyFilesInCopyList
  366.  
  367.     ini$ = MakePath(WinDir$, "OPERAMM.INI")
  368.     WriteToLogFile ""
  369.     WriteToLogFile "Update INI file"
  370.     WriteToLogFile ""
  371.     CD$ = MID$(SrcDir$,1,2)
  372.     IF CD$ = "\\" THEN
  373.         i% = 3
  374.         Count% = 0
  375.         WHILE i% <= LEN(SrcDir$) AND Count% < 2
  376.             IF MID$(SrcDir$,i%,1) = "\" THEN
  377.                 Count% = Count% + 1
  378.             END IF
  379.             i% = i% +1
  380.         WEND
  381.         IF Count% = 2 THEN
  382.             i% = i%-1
  383.         END IF
  384.         CD$ = MID$(SrcDir$,1,i%-1)
  385.     END IF
  386.     Desktop$ = "Homo Sapiens"
  387.     Audio$ = CD$ + "\mediaeng\"
  388.     CreateIniKeyValue ini$, Desktop$, "CDRomDrive", CD$, cmoOverwrite
  389.     CreateIniKeyValue ini$, Desktop$, "PathAudio", Audio$, cmoOverwrite
  390.     CreateIniKeyValue ini$, Desktop$, "InstallationPath", DEST$, cmoOverwrite
  391.     CreateIniKeyValue ini$, Desktop$, "SuoniAmbiente", "SI", cmoOverwrite
  392.     CreateIniKeyValue ini$, Desktop$, "ProgName", "HOMO.EXE", cmoOverwrite
  393.     CreateIniKeyValue ini$, Desktop$, "Sigla", "UNA", cmoOverwrite
  394.  
  395.     INSTPATH$ = DEST$
  396. END SUB
  397.  
  398. SUB ConfigHS STATIC
  399.     CreateProgmanGroup "Multimedia from E.M.M.E.", "", cmoNone
  400.     CreateProgmanItem "Multimedia from E.M.M.E.", "Homo Sapiens", MakePath(INSTPATH$,"Operamm.exe Homo Sapiens"), MakePath(INSTPATH$,"HOMOBMP.DLL")+"", cmoOverwrite
  401. '**    CreateProgmanItem "Multimedia from E.M.M.E.", "Homo Sapiens", MakePath(INSTPATH$,"Operamm.exe Homo Sapiens"), MakePath(INSTPATH$,"HSINI.exe")+",,,,"+INSTPATH$, cmoOverwrite
  402. END SUB
  403.  
  404.  
  405. '**
  406. '** Purpose:
  407. '**     Performs all installation operations.
  408. '** Arguments:
  409. '**     none.
  410. '** Returns:
  411. '**     none.
  412. '*************************************************************************
  413. SUB Install STATIC
  414.  
  415.     SetRestartDir WinDir$
  416.     CopyFilesInCopyList
  417.  
  418. ''Updating WIN.INI and SYSTEM.INI
  419. ''Only update SYSTEM.INI  on NT or next version of Windows for other codecs
  420.  
  421. IF ((NOT OnNT$ = "TRUE") AND MinorVer% < 50) THEN
  422.     IF VflatdPresent() = 0 THEN
  423.        CreateSysIniKeyValue WinDir$ + "system.ini", "386Enh", "device", "dva.386", cmoOverwrite
  424.     END IF
  425. END IF
  426.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.IV32", "ir32.dll", cmoOverwrite
  427.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.IV31", "ir32.dll", cmoOverwrite
  428.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.RT21", "ir21.dll", cmoOverwrite
  429.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.YVU9", "iyvu9.dll", cmoOverwrite
  430.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.CVID", "iccvid.drv", cmoOverwrite
  431.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MSVC", "msvidc.drv", cmoOverwrite
  432.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "VIDC.MRLE", "MSRLE.drv", cmoOverwrite
  433.     CreateIniKeyValue WinDir$ + "WIN.INI", "mci extensions", "avi", "AVIVideo", cmoOverwrite
  434.     CreateIniKeyValue WinDir$ + "system.ini", "mci", "AVIVideo", "mciavi.drv", cmoOverwrite
  435.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "WaveMapper", "msacm.drv", cmoOverwrite
  436.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.msadpcm", "msadpcm.acm", cmoOverwrite
  437.     CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "MSACM.imaadpcm", "imaadpcm.acm", cmoOverwrite
  438.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "ir21.dll", "Intel Indeo(TM) Video R2.1", cmoOverwrite
  439.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msacm.drv", "Microsoft Sound Mapper V2.00", cmoOverwrite
  440.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "msadpcm.acm", "Microsoft ADPCM Codec V2.00", cmoOverwrite
  441.     CreateIniKeyValue WinDir$ + "control.ini", "drivers.desc", "imaadpcm.acm", "Microsoft IMA ADPCM Codec V2.00", cmoOverwrite
  442.  
  443. ''*************************************************************************************************************************
  444. ''*************************************************************************************************************************
  445. ''To add a DCI provider, please un-comment the UDH line, and un-comment and replace the <provider> with your own file name
  446. ''
  447. ''  CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "DCI", "<provider>", cmoOverwrite
  448. ''  CreateIniKeyValue WinDir$ + "system.ini", "Drivers", "vids.draw", "udh.dll", cmoOverwrite
  449. ''*************************************************************************************************************************
  450. ''*************************************************************************************************************************
  451.  
  452. ''Do not register components not installed with Video for Windows on NT or next version of Windows.
  453. IF ((NOT OnNT$ = "TRUE") AND MinorVer% < 50) THEN
  454.     Run ("regedit.exe /s " + MakePath(WinDir$, "mplayer.reg"))
  455.     Run ("regedit.exe /s " + MakePath(WinSysDir$, "OLE2.reg"))
  456.     Run ("regedit.exe /s " + MakePath(WinSysDir$, "cleanup.reg"))
  457.  
  458. '' Mplayer
  459.     CreateProgmanItem "Accessories", "Media Player", MakePath(WinDir$, "mplayer.exe"), "", cmoOverwrite
  460.  
  461. END IF  ''NT and next version of Windows installation stop here.
  462.  
  463.     Run ("profdisp.exe")   
  464.  
  465. END SUB
  466.  
  467.  
  468. FUNCTION EnoughDiskSpace() STATIC AS INTEGER
  469.  
  470.     EnoughDiskSpace = 0
  471.  
  472.     SrcDir$ = GetSymbolValue("STF_SRCDIR")
  473.     SetSymbolValue "Extra", ""
  474.     SetSymbolValue "Cost", ""
  475.     
  476.     DESTDRIVE$ = MID$(DEST$,1,1)
  477.     
  478.     win% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  479.     inst% = ASC(ucase$(DESTDRIVE$)) - ASC("A") + 1
  480.     FOR i% = 1 TO (win%-1)
  481.         rr% = FAddListItem ("Extra", "0")
  482.     NEXT i%
  483.     rr% = FAddListItem ("Extra", "10000")
  484.     ClearCopyList
  485.     AddSectionFilesToCopyList "Runtime", SrcDir$, DEST$
  486.     AddSectionFilesToCopyList "HOMO", SrcDir$, DEST$
  487.     StillNeed& = GetCopyListCost("Extra", "Cost", "")
  488.  
  489.     IF StillNeed& > 0 THEN
  490.         cost& = VAL(GetListItem("Cost", win%))
  491.         free& = GetFreeSpaceForDrive(WINDRIVE$)
  492.  
  493.         EnoughDiskSpace = 1
  494.         IF cost& > free& THEN
  495.             FullName$ = "Windows drive:"
  496.             FullDrive$ = WINDRIVE$ + ":"
  497.             GOSUB DISKSPACE
  498.         END IF
  499.  
  500.         'Se scelgo Esci, viene resettato questo long, quindi non continuo
  501.         IF StillNeed& > 0 THEN
  502.             cost& = VAL(GetListItem("Cost", inst%))
  503.             free& = GetFreeSpaceForDrive(DESTDRIVE$)
  504.     
  505.             IF cost& > free& THEN
  506.                 FullName$ = "Installation drive:"
  507.                 FullDrive$ = DESTDRIVE$ + ":"
  508.                 GOSUB DISKSPACE
  509.             END IF
  510.         END IF
  511.     END IF
  512.     GOTO FINESUB
  513.  
  514. DISKSPACE:
  515.     SetSymbolValue "ConfirmTextIn", ""
  516.     rr% = FAddListItem ("ConfirmTextIn", FullName$)
  517.     rr% = FAddListItem ("ConfirmTextIn", FullDrive$)
  518.     rr% = FAddListItem ("ConfirmTextIn", "Required space:")
  519.     rr% = FAddListItem ("ConfirmTextIn", STR$(cost&/1024)+" KB")
  520.     rr% = FAddListItem ("ConfirmTextIn", "Available space:")
  521.     rr% = FAddListItem ("ConfirmTextIn", STR$(free&/1024)+" KB")
  522. DISKSPACE1:
  523.     sz$ = UIStartDlg(CUIDLL$, DISKSPACEDLG, "FConfirmDlgProc", APPHELP, HELPPROC$)
  524.  
  525.     IF sz$ = "CONTINUE" THEN
  526.         UIPop 1
  527.     ELSEIF sz$ = "REACTIVATE" THEN
  528.         GOTO DISKSPACE1
  529.     ELSE
  530.         UIPop 1
  531.         EnoughDiskSpace = 3
  532.         StillNeed& = 0
  533.     END IF
  534.     RETURN
  535.  
  536. FINESUB:
  537.     ClearCopyList
  538. END FUNCTION
  539. '**
  540. '** Purpose:
  541. '**     Appends a file name to the end of a directory path,
  542. '**     inserting a backslash character as needed.
  543. '** Arguments:
  544. '**     szDir$  - full directory path (with optional ending "\")
  545. '**     szFile$ - filename to append to directory
  546. '** Returns:
  547. '**     Resulting fully qualified path name.
  548. '*************************************************************************
  549. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  550.     IF szDir$ = "" THEN
  551.     MakePath = szFile$
  552.     ELSEIF szFile$ = "" THEN
  553.     MakePath = szDir$
  554.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  555.     MakePath = szDir$ + szFile$
  556.     ELSE
  557.     MakePath = szDir$ + "\" + szFile$
  558.     END IF
  559. END FUNCTION
  560.  
  561.